
#pragma once

#include <Ogre.h>
#include <string>

//! Encapsulates those things related to the debugging message. 
//! It is expected that those states which want or require a
//! debugging output message n the screen and other debugging
//! information inherit privately from it.
//!
//! @remark User must carry out certain actions for the class
//! to work as expected.
class DebuggeableState
{

	std::string mDebugText;

public:
	
	//! Necessary to call this function to update debugging information,
	//!
	virtual void UpdateDebuggingInfo(Ogre::RenderWindow * renderWin);

	//! Permits to change the debugging text.
	//!
	//! @param text New text
	void SetDebugText(std::string const & text) { mDebugText = text; }

	//! Returns a string containing the debug text.
	//! 
	std::string const & GetDebugText() const { return mDebugText; }

	//! Activates or deactivates debugging info. (Whether it is shown or not). 
	//! Especially if it is active, UpdateDebuggingInfo should be constantly called
	//! to update.
	//!
	//! @param enable Enable or Disable.
	virtual void ActivateDebuggingInfo(bool activa = true);

};